Skip to main content

30 输入输出设备

接口和设备

硬件设备通过接口连接到总线上,再通过总线和 CPU 通信。

CPU 如何控制 I/O 设备

CPU 通过向接口电路板传输信号控制实际的硬件。

  1. 数据寄存器(Data Register):CPU 向 I/O 设备写入需要传输的数据。
  2. 命令寄存器(Command Register):CPU 发送一个命令,告诉设备开始工作。这时设备里面的控制电路设置状态寄存器的状态为 not-ready,并操作设备进行工作。
  3. 状态寄存器(Status Register):告诉 CPU 现在设备已经在工作了,这时 CPU 再发送数据或命令没用。直到前面的动作完成,状态寄存器重新变成 ready 状态,CPU 才能发送下一个数据和命令。

信号和地址

MMIO

计算机把 I/O 设备的各个寄存器,及 I/O 设备内部的内存地址,映射到主内存地址空间里。主内存的地址空间里,会给不同的 I/O 设备预留一段内存地址。CPU 和 I/O 设备通信,就往这些地址发送数据。这些地址信息通过地址线发送,对应的数据信息通过数据线发送。

I/O 设备监控地址线,在 CPU 往自己地址发送数据时把对应的数据线里传输的数据,接入到对应的设备里面的寄存器和内存里。CPU 无论是向 I/O 设备发送命令、查询状态还是传输数据,都可以通过这样的方式,叫作内存映射 IO(Memory-Mapped I/O,简称 MMIO)。

PMIO

通过特定的指令支持端口映射 I/O(Port-Mapped I/O,简称 PMIO),里面访问的设备地址,不再是在内存地址空间里面,而是一个专门的端口(Port)。